<?php

function connexionBdd() {
    //connexion à la bdd
    if (in_array($_SERVER['HTTP_HOST'], array("127.0.0.1", "localhost"))) {
        $dns = 'mysql:host=localhost;dbname=bulletinhfacile';
        $utilisateur = 'root';
        $motDePasse = '';
    } else {
        $dns = 'mysql:host=mysql51-80.perso;dbname=bulletinhfacile';
        $utilisateur = 'bulletinhfacile';
        $motDePasse = 'LFA7ByqG';
    }

    try {
        $connection = new PDO($dns, $utilisateur, $motDePasse);
        $connection->exec("SET CHARACTER SET utf8");
        return $connection;
    } catch (Exception $e) {
        echo 'Notre équipe de maintenance effectue une opération de maintenance de la base de donées.<br />Le site réouvrira ses portes rapidement, merci de votre confiance.';
        error_log($e->getMessage(), 1, $mailAdmin);
    }
}

function actualiser_session() {    
    //on chek si une session existe
    if (isset($_SESSION['prof_id']) && (intval($_SESSION['prof_id']) != 0) && isset($_SESSION['prof_mdp'])) {
        $id = $_SESSION['prof_id'];
        $mdp = $_SESSION['prof_mdp'];
    }
    //Sinon on cherche dans les cookie
    else {
        if (isset($_COOKIE['prof_id']) && (intval($_SESSION['prof_id']) != 0) && isset($_COOKIE['prof_mdp'])) {
            $id = $_COOKIE['prof_id'];
            $mdp = $_COOKIE['prof_mdp'];
        }
        //Pas de session, pas de cookie ->Bye bye...
        else {
            vider_cookie();
            session_destroy();
            header('Location: ' . ROOTPATH . '/connexion.php');
        }
    }

    $connection = connexionBdd();
    $select = $connection->prepare('SELECT `prof_id`,`prof_mail`,`prof_mdp` FROM `prof` WHERE `prof_id`= :id');
    $select->setFetchMode(PDO::FETCH_OBJ);
    $select->bindParam(':id', $id, PDO::PARAM_INT);
    $select->execute();
    $enregistrement = $select->fetch();
    $select->closeCursor();

    //Si la requête a un résultat (c'est-à-dire si l'id existe dans la table membres)
    if ($enregistrement) {
        //si el password en base correspond pas à celui que l'on a en session ou en cookie
        if ($mdp != $enregistrement->prof_mdp) {
            vider_cookie();
            session_destroy();
            header('Location: ' . ROOTPATH . '/connexion.php');
        }
        //si tout est ok
        else {
            $_SESSION['prof_id'] = $enregistrement->prof_id;
            $_SESSION['prof_email'] = $enregistrement->prof_mail;
            $_SESSION['prof_mdp'] = $enregistrement->prof_mdp;
        }
    }
    //si on a pas d'enregistrement bye bye
    else {
        vider_cookie();
        session_destroy();
        header('Location: ' . ROOTPATH . '/connexion.php');
    }
}

function vider_cookie() {
    foreach ($_COOKIE as $cle => $element) {
        setcookie($cle, '', time() - 3600);
    }
}

function checkVarchar($var, $min, $max) {
    if ($var == '')
        return 'empty';
    else if (strlen($var) < $min)
        return 'tooshort';
    else if (strlen($var) > $max)
        return 'toolong';
    else
        return 'ok';
}

function checkmdp($mdp) {
    if ($mdp == '')
        return 'empty';
    else if (strlen($mdp) < 3)
        return 'tooshort';
    else if (strlen($mdp) > 40)
        return 'toolong';
    else {
        return 'ok';
    }
}

function checkmdpS($mdp, $mdp2) {
    if ($mdp != $mdp2 && $mdp != '' && $mdp2 != '')
        return 'different';
    else
        return checkmdp($mdp);
}

function checkmail($email) {
    if ($email == '')
        return 'empty';
    else if (!preg_match('#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#is', $email))
        return 'isnt';

    else {
        $connection = connexionBdd();
        $req = $connection->prepare('SELECT `prof_mail` FROM `prof` WHERE `prof_mail`= :mail');
        $req->bindParam(':mail', $email, PDO::PARAM_STR);
        $req->execute();
        $count = $req->rowCount();
        $req->closeCursor();
        if ($count > 0)
            return 'exists';
        else
            return 'ok';
    }
}

function checkmailS($email, $email2) {
    if ($email != $email2 && $email != '' && $email2 != '')
        return 'different';
    else
        return 'ok';
}

function birthdate($date) {
    if ($date == '')
        return 'empty';
    elseif (!preg_match("/(\d{2})-(\d{2})-(\d{4})/i", $date))
        return 'format';
    else
        return 'ok';
}

function vidersession() {
    foreach ($_SESSION as $cle => $element) {
        unset($_SESSION[$cle]);
    }
}

function tester_password($mdp) {
    $longueur = strlen($mdp);
    $point = $point_min = $point_maj = $point_chiffre = $point_caracteres = 0;
    for ($i = 0; $i < $longueur; $i++) {
        $lettre = $mdp[$i];

        if ($lettre >= 'a' && $lettre <= 'z') {
            $point += 1;
            $point_min = 1;
        } else if ($lettre >= 'A' && $lettre <= 'Z') {
            $point += 2;
            $point_maj = 2;
        } else if ($lettre >= '0' && $lettre <= '9') {
            $point += 3;
            $point_chiffre = 3;
        } else {
            $point += 5;
            $point_caracteres = 5;
        }
    }

    // Calcul du coefficient points/longueur
    $etape1 = $point / $longueur;

    // Calcul du coefficient de la diversité des types de caractères...
    $etape2 = $point_min + $point_maj + $point_chiffre + $point_caracteres;

    // Multiplication du coefficient de diversité avec celui de la longueur
    $resultat = $etape1 * $etape2;

    // Multiplication du résultat par la longueur de la chaîne
    $final = $resultat * $longueur;

    return $final;
}

function getCodeValidation($longCode) {
    //définition des caractères autorisés.
    $carac = '012345679abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
    $Tcarac = strlen($carac);
    $lettre = '';
    for ($i = 0; $i < $longCode; $i++) {
        $lettre .= $carac[mt_rand(0, $Tcarac - 1)];
    }

    return $lettre;
}

function secure($var) {
    $var = htmlspecialchars(strip_tags(trim($var)));
    return $var;
}

function check($val, $test, $type) {
    if ($val == $test) {
        if ($type == 's')
            return 'selected';
        else
            return 'checked';
    }
}

function securite_tarif($string, $nbrTarif, $default) {
    // On regarde si le type de string est un nombre entier (int)
    if (ctype_digit($string)) {
        $int = intval($string);
    }
    if (($int < 1) || ($int > $nbrTarif)) {
        $int = $default;
    }

    return $int;
}
?>